1. Field of the Invention
The present invention relates to a method of correctly monitoring status of a print job such as completion of a print process or existence of a job according to a print instruction from a client computer, and an apparatus thereof.
2. Description of the Related Art
When a printer performs printing, a method of monitoring the status of the print process based on the various operation statuses of the printer is employed. The various operation statuses include a normal status such as paper discharge, paper feeding, or printing, and an error status such as paper jam, or running out of ink. In addition to the above monitoring, there is also a method of monitoring the status of a print process based on the status of a print job which is input into a spooler corresponding to the printer. Such status of a print job includes spooling, despooling, and existence of a job.
In a print status monitoring system utilizing the above monitoring methods, the simplest method for detecting completion of a print process is to monitor the transition of the printer from a printing state to an idle state via paper discharge operation.
However, if the print job remains spooled inside a computer and thus is not transferred to the printer, the completion of the print process cannot be determined correctly by using a method which only monitors the operation status of the printer. Additionally, when a print queue, which is a waiting list of the print job, is placed on hold, the completion cannot be determined correctly by using the above method.
Moreover, in a method which only monitors the existence of a print job in the print queue inside a host computer, the printing is considered to be completed when data transfer to the printer is completed. Consequently, the printing is considered to be completed even in the case where printing is continued in the printer or the printing has stopped because of an error.
To solve the above problems, a print status monitoring system discussed in Japanese Patent Application Laid-Open No. 2004-21692 detects print completion more accurately based on the operation status of the printer and the existence of a print job in the print queue. More particularly, it is determined that the printer is not printing when the print job (i.e., monitor target) does not exist in the print queue and the printer is ready to print.
Furthermore, print completion can also be determined in collaboration with a process called a language monitor which is executed in the spool subsystem in operating systems such as Microsoft Windows® 2000 and Windows® XP. In a spool subsystem, print data is output after spooling the print data once.
The language monitor can transfer print data to a printer connected to the computer while communicating with the printer by two-way communication complying with Institute of Electrical and Electronic Engineers (IEEE) 1284, USB1.1, or Universal Serial Bus (USB) 2.0 standards.
After the language monitor transfers all of the print data to the printer and confirms that the printer has discharged the last page, the language monitor returns control to the spooler. Consequently, the job in the print queue disappears only after the printer outputs the last page without fail. Additionally, the print job in the print queue disappears if a user cancels the print job during the process.
Thus, a status monitor can monitor the status of the print process by communicating with a print queue and can determine that the print process has ended when the job disappears from the print queue. This method will be described below by referring to a printer network environment including an operating system such as Microsoft Windows® XP. In such a printer network environment, the status of a print job in a printing system including a print server computer (hereinafter, referred to as server) and a client computer (hereinafter, referred to as client) is monitored through one print queue. The status of the print job in a print process is thus obtained by monitoring a print queue which is shared by the server and the client, regardless of the process in the server or the client. In the present example, the print queue is retained in the server, and the status monitor is monitoring the print queue. Since the information of the job which is being processed in the client is also reflected in the print queue of the server, the client and the server share one print queue. A storage area which is actually the print queue can be included in either the client or the server, and information about the job processed in both the client and the server can be obtained by monitoring the status of the print queue.
FIG. 6 illustrates the relation between print processes in the server and the client, the job in the print queue shared by the server and the client, and monitoring of the status in the client of the system. The processing illustrated in FIG. 6 progresses in time from the upper part to the lower part.
In a client 601, a print job is issued from a given application in step 604, and in step 607, the status monitor is activated from a user interface (UI) driver 103 which is a software module inside a printer driver. The UI driver 103 will be described below in an embodiment.
After step 607 is finished, the status monitor 110 enters a status monitoring phase 608 and begins communications 610, 611, and 612 with a print queue 602 which is shared by the server 603 and the client 601. Through such communication, the status monitor obtains information about the existence of a print job in the print queue 602.
In step 606, the print job issued in step 604 is sent to the server 603.
In step 616, the server 603 starts receiving a print job sent from the client 601. At the same time, a print job 615 appears in the print queue 602.
In step 617, the server 603 executes the print job received in step 616. The execution of a print job includes a series of processes related to a print output process of a print job, such as rendering of a print job on the server or data transfer to the printer. Rendering is a process of generating an image from information about an object or a figure provided in the form of numerical data, by means of calculation.
The print job execution 617 continues in the server 603 until the print process in the printer is completed, according to a response from the printer. The print job 615 disappears from the print queue 602 when the print job execution 617 ends.
The status monitor 110 is in a monitoring phase 608 and continuing communication with the print queue 602. When the status monitor 110 detects through communication 613 that the job has completely disappeared from the print queue 602, the status monitor finishes processing and stops the status monitoring in step 609.
As described in FIG. 6, when printing is performed from a client, the print process exists as one job in a print queue throughout the process. The job exists in the print queue regardless of whether the print data actually exists in the client side or the server side. Therefore, the status monitor needs to monitor only one print queue in a client and in a server.
However, there are cases where conventional methods cannot detect print completion and print status in a printing system that include a spool sub system in a network environment.
There are print systems that perform rendering of a print job in a client when a client executes printing on a printer connected to a server. This process is known as client side rendering.
Client side rendering prevents the process load from concentrating on a server in a large-scale network. Additionally, client side rendering allows the client to use the function of previewing print results which a printer driver provides in the rendering process. Furthermore, by performing rendering in the client, the print job is completed within the client, and thus an independent print queue can be formed inside the client. However, it is desirable to monitor the status of the print job of the print process which is performed in the server and client through one print queue, which simplifies job management and job operation in one print process.
When a client starts a print process in client side rendering, a job corresponding to the print process appears in the print queue. However, the print job disappears from the print queue just before the printer connected to the server makes a print-out. After a short interval, the print job corresponding to the print process reappears in the print queue, and the printer connected to the server makes the print-out. Since rendering is performed in the client, the job temporarily disappears from the print queue during the period in which a process is not performed in either the client or the server such as transfer of the print data from the client to the server.
Client side rendering will be described in detail below by referring to FIG. 7.
Moreover, a job ID of a print job that appears for the first time on the print queue and a job ID of a print job which appears for the second time are different. A job ID, which is an identifier for identifying a print job, is assigned to the target job by a print system or an operating system. The job ID is assigned to the target job together with job information such as a document name and an owner name. The job ID can be obtained together with the job information. Based on the job ID, the target job can be uniquely identified from a plurality of jobs in the print queue. Additionally, job information in the present invention includes information about the apparatus which issued the print job, information about the apparatus performing the process according to the print job, and information about the print setting or error status.
Therefore, in the client side rendering, the print job disappears once from a print queue, during which the print job cannot be monitored. Moreover, the print job ID which is assigned to a print job issued by a client at print start is different from the job ID which is assigned to the same print job by the server after the print job temporarily disappears from the print queue when print data is transferred to the server. Consequently, conventional methods for determining a print status or completion of a print process based on the existence of a print job in the print queue and the operation status of the printer fail in such cases.
For example, a print monitoring system which automatically stops monitoring of a print queue performed by the status monitor when printing is completed, can stop monitoring at an inappropriate timing. Furthermore, a charging system which charges a fee after confirming print completion can improperly count up a number of prints. Moreover, a distributed processing system utilizing a plurality of printers can distribute a job inappropriately to a printer which is still making a print-out.
For the purpose of preventing a print job from temporarily disappearing from the print queue, a method is devised in which a print job corresponding to print data in a client is not reflected in the print queue. However, in such a case, the job in the print queue cannot be managed after the print starts until the print data reaches the server. Therefore, the method has drawbacks in that monitoring cannot be performed during such a period so that the start of the print process cannot be detected or the user cannot cancel printing.